/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.facilscrum.form.equipos;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.swing.table.DefaultTableModel;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.view.JasperViewer;
import org.javscaz.javscaztools.utilidades.Utilidades;
import org.facilscrum.beans.Equipos;
import org.facilscrum.beans.Equiposusuarios;
import org.facilscrum.beans.Usuarios;
import org.facilscrum.controller.EquiposController;
import org.facilscrum.controller.EquiposusuariosController;
import org.facilscrum.controller.UsuariosController;
import org.facilscrum.generales.Mensajeria;
import org.jdesktop.swingx.autocomplete.AutoCompleteDecorator;

/**
 *
 * @author avbravo
 */
public class EquiposUsuariosConsultarForm extends javax.swing.JInternalFrame {

    Equipos equipos = new Equipos();
    EquiposController equiposController = new EquiposController();
    Equiposusuarios equiposusuarios = new Equiposusuarios();
    EquiposusuariosController equiposusuariosController = new EquiposusuariosController();
    List<Equiposusuarios> equiposusuariosList = new ArrayList<>();
    Usuarios usuarios = new Usuarios();
    UsuariosController usuariosController = new UsuariosController();
    DefaultTableModel modelo, modeloSprint;

    /**
     * Creates new form SprintForm
     */
    public EquiposUsuariosConsultarForm() {
        initComponents();
        modelo = (DefaultTableModel) jTableEquiposusuarios.getModel();

        if (!cargarComboEquipos()) {
        }

        java.util.Calendar ca = java.util.Calendar.getInstance();
        java.sql.Date mydate = new java.sql.Date(ca.getTimeInMillis());
AutoCompleteDecorator.decorate(jComboBoxEquipo);
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jTabbedPane1 = new javax.swing.JTabbedPane();
        jPanel1 = new javax.swing.JPanel();
        jScrollPane3 = new javax.swing.JScrollPane();
        jTableEquiposusuarios = new javax.swing.JTable();
        jButtonRegresar = new javax.swing.JButton();
        jButtonImprimir = new javax.swing.JButton();
        jPanel3 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jComboBoxEquipo = new javax.swing.JComboBox();

        setClosable(true);
        setTitle("Informes de usuarios por equipo");

        jTableEquiposusuarios.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Username", "Cedula", "Nombre", "Departamento"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.Object.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jTableEquiposusuarios.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jTableEquiposusuariosMouseClicked(evt);
            }
        });
        jScrollPane3.setViewportView(jTableEquiposusuarios);

        jButtonRegresar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/avbravo/jscrum/gif/return.gif"))); // NOI18N
        jButtonRegresar.setToolTipText("Regresar");
        jButtonRegresar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonRegresarActionPerformed(evt);
            }
        });

        jButtonImprimir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/facilscrum/gif/x16/print.png"))); // NOI18N
        jButtonImprimir.setEnabled(false);
        jButtonImprimir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonImprimirActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(204, 204, 204)
                        .addComponent(jButtonImprimir, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(67, 67, 67)
                        .addComponent(jButtonRegresar, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 604, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(18, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 190, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 8, Short.MAX_VALUE)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jButtonRegresar, javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jButtonImprimir, javax.swing.GroupLayout.Alignment.TRAILING))
                .addContainerGap())
        );

        jTabbedPane1.addTab("Usuarios", jPanel1);

        jPanel3.setBorder(javax.swing.BorderFactory.createEtchedBorder());

        jLabel1.setText("Equipo");

        jComboBoxEquipo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jComboBoxEquipoActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jComboBoxEquipo, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(271, Short.MAX_VALUE))
        );
        jPanel3Layout.setVerticalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(jComboBoxEquipo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(28, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 642, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(20, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jButtonRegresarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonRegresarActionPerformed
        dispose();
    }//GEN-LAST:event_jButtonRegresarActionPerformed

    private void jComboBoxEquipoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBoxEquipoActionPerformed
        try {
            int j = jComboBoxEquipo.getSelectedIndex();
            if (j != -1) {
                equipos = equiposController.getEquiposlist().get(j);
                cargarTablaUsuarios();


            }
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "comboProyecto()");
        }
    }//GEN-LAST:event_jComboBoxEquipoActionPerformed

    private void jTableEquiposusuariosMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTableEquiposusuariosMouseClicked
        try {
        } catch (Exception ex) {
        }
    }//GEN-LAST:event_jTableEquiposusuariosMouseClicked

    private void jButtonImprimirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonImprimirActionPerformed
        HashMap map = new HashMap();
        try {
           
            imprimir(equiposusuariosList, map);
        } catch (JRException ex) {
            Mensajeria.MensajeError(ex, "boton imprimir");
        }
    }//GEN-LAST:event_jButtonImprimirActionPerformed
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButtonImprimir;
    private javax.swing.JButton jButtonRegresar;
    private javax.swing.JComboBox jComboBoxEquipo;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JTable jTableEquiposusuarios;
    // End of variables declaration//GEN-END:variables

    /*
     * cargarComboProyectos()
     */
    private Boolean cargarComboEquipos() {
        try {

            jComboBoxEquipo.removeAllItems();

            if (equiposController.selectAll()) {
                for (Equipos e : equiposController.getEquiposlist()) {
                    jComboBoxEquipo.addItem(e.getEquipo());
                }
                return true;
            } else {
                Mensajeria.Mensaje("Debe crear primero el equipo ");
            }
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "cargarComboEquipos() ");

        }
        return false;
    }
    /*
     * cargarComoboSprint()
     */


    /*
     *  cargarTablaUserStories()
     */
    private void cargarTablaUsuarios() {
        try {
            equiposusuariosList.removeAll(equiposusuariosList);
            jButtonImprimir.setEnabled(false);
            modelo = Utilidades.limpiarModelo(modelo);
            String where = "activo='si'";
            if (usuariosController.query(where)) {
                for (Usuarios u : usuariosController.getUsuarioslist()) {
                    Object[] filas = new Object[4]; // Hay tres columnas en la tabla       
                    where = "idequipo ='" + equipos.getIdequipo() + "' and username='" + u.getUsername() + "'";
                    if (equiposusuariosController.query(where)) {
                        filas[0] = u.getUsername();
                        filas[1] = u.getCedula();
                        filas[2] = u.getNombre();
                        filas[3] = u.getDepartamento().getDepartamento();
                        modelo.addRow(filas);
                        Equiposusuarios e = new Equiposusuarios();
                        e.setIdequipo(equipos.getIdequipo());
                        e.setUsername(u.getUsername());
                        e.setUsuarios(u);
                        e.setEquipos(equiposusuariosController.getEquiposusuarioslist().get(0).getEquipos());
                        e.setIdequiposusuario(equiposusuariosController.getEquiposusuarioslist().get(0).getIdequiposusuario());
                        equiposusuariosList.add(e);
                    }
                    if(modelo.getRowCount()!=0){
                         jButtonImprimir.setEnabled(true);
                    }
                   
                }

            }
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "cargarTablaUsuarios()");
        }
    }

    private void imprimir(List<Equiposusuarios> aux, HashMap map) throws JRException {
        try {
            JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(aux);
//Indicamos la ruta del reporte
            InputStream reporte = (InputStream) getClass().getResourceAsStream("/org/facilscrum/reportes/equiposusuarios.jasper");
            if (reporte == null) {
                Mensajeria.Mensaje("No se pudo cargar el reporte");
            } else {
                JasperPrint print = JasperFillManager.fillReport(reporte, map, ds);
                JasperViewer.viewReport(print, false);
            }
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "Imprimir()");
        }
    }
}
